/* 
    1. 在 node 中，有一个全局对象 global，它的作用和网页中的 window 类似
        1.1 在全局中创建的变量都会作为 global 的属性 保存
        1.2 在全局中创建的函数都会作为 global 的方法 保存

    2. 当 node 在执行模块中的代码时，他会先在代码的 最顶部 添加如下代码：
        function (exports, require, module, __filename, __dirname) {
       在代码的底部，添加如下代码：
        }
    
    3. 实际上模块中的代码都是包装在一个函数中执行的，并且在函数执行时，同时传递进了5个实参:
        exports , require , module , __filename , __dirname

        exports:
            - 该对象用来将变量和函数暴露在外面
        require:
            - 函数，用来引入外部的模块
        module: 
            - module 就是模块的意思，代表的就是整个当前的模块
            - exports 就是 module 的属性，因此可以使用 exports 导出，也可以使用 module.exports 导出
        __filename:
            - 就是当前模块的完整路径，或者说当前模块的绝对路径
        __dirname:
            - 
*/
var a = 10;
b = 20;
console.log("a = "+global.a); // a = undefined
console.log("b = "+global.b); // b = 20

//console.log(arguments);
/* 
    arguments.callee
        - 这个属性保存的是当前执行的函数对象
*/
// console.log(arguments.callee); // [function]
// console.log(arguments.callee+""); // 可以看见 【function】 的内部结构了
// console.log(arguments.length); // 5 , 可见传递了5个参数

console.log(exports);
console.log(module.exports);
console.log(exports == module.exports); // true
// 因此使用 exports 和 module.exports 是一样的

console.log(__filename); // C:\Users\34762\Desktop\nodeJS学习\全局对象global.js
// 可以看见 __filename 实际上就是一个路径，是当前模块的绝对路径，完整路径

console.log(__dirname); // C:\Users\34762\Desktop\nodeJS学习
// 可以看见 __dirname 实际上就是 当前模块的文件的完整路径




